package com.neusoft.chenhanhua.d0917;

import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;
import java.util.Arrays;

public class IO流 {
	/*	IO流
	 * 		主要是Java用于操作文件读写的
	 * 		java.io.File ：表示一个文件，即Java的文件封装类
	 * 			一个File对象，则表示与计算机硬盘上的文件或目录，所以在创建File对象时，必须指定路径
	 * 			路径：
	 * 				绝对路：了解
	 * 				相对路径：必须掌握
	 * 			构造方法
	 * 				public File(String pathname)
	 * 			常量
	 * 				File.separator：表示文件路径分隔符，linux和mac：/，win：\
	 * 			常用方法
	 * 				length()：文件的长度
	 * 				canXXX()：可否XXX，文件权限相关的
	 * 				compareTo(File pathname)：比较两个抽象的路径名。
	 * 				equals(Object obj) 
	 * 				getPath()	获取文件路径
	 * 				createNewFile() 创建文件
	 * 				delete() 删除
	 * 				deleteOnExit() 请求在虚拟机终止时删除由此抽象路径名表示的文件或目录。 
	 * 				exists() 文件是否存在
	 * 				getAbsoluteFile() 获取绝对路径的File对象
	 * 				getAbsolutePath() 获取绝对路径的String对象
	 * 				getCanonicalPath() 
	 * 				getFreeSpace() 磁盘剩余空间
	 * 				getName() 获取文件名称，包含后缀名
	 * 				getParent() 获取目录String对象
	 * 				getParentFile() 获取目录File对象
	 * 				getTotalSpace() 磁盘总空间
	 * 				getUsableSpace() 已经使用的空间
	 * 				isDirectory() 判断是否为目录
	 * 				isFile() 
	 * 				isHidden() 
	 * 				String[] list() 返回一个字符串数组，命名由此抽象路径名表示的目录中的文件和目录。 
	 * 				String[] list(FilenameFilter filter) 根据过滤器filter的条件过滤目录中的文件和目录。 
	 * 				mkdir() 创建一层目录
	 * 				mkdirs() 创建多层目录 ，也可以创建一层
	 * 				renameTo(File dest) 文件移动，也是重命名
	 * 				
	 * 		输入流
	 * 		输出流
	 * 
	 * 	File的练习
	 * 		设置一个文件管理器
	 * 			1、可以创建目录的按钮
	 * 			2、可以创建文件的按钮，创建文件只是在当前目录下
	 * 			3、搜索当前目录下指定文件，比如，文件名及后缀名搜索，搜索功能支持多层级搜索
	 */
	
	public static void main(String[] args) {
		t1();
	}
	
	public static void t1() {
		String path = "files" + File.separator + "1.txt";
		File f = new File(path);
		File f1 = new File(path);
		System.out.println(f.length());
		System.out.println(f.compareTo(f1));
		System.out.println(f.equals(f1));
		String p1 = "files" + File.separator + "2.txt";
		File f2 = new File(p1);
//		try {
//			System.out.println(f2.createNewFile());
//		} catch (IOException e) {
//			e.printStackTrace();
//			System.out.println("路径错误");
//		}
		System.out.println(f2.delete());
		System.out.println(f2.getAbsolutePath());
		System.out.println(22222);
		System.out.println(f2.getAbsoluteFile());
		try {
			System.out.println(f2.getCanonicalPath());
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		System.out.println(f2.getName());
		System.out.println(333);
		System.out.println(f2.getParent());
		System.out.println(f2.isDirectory());
		System.out.println(Arrays.toString(f2.getAbsoluteFile().getParentFile().getParentFile().list()));
		System.out.println("文件过滤");
		File f3 = f2.getAbsoluteFile().getParentFile().getParentFile();
		String[] files = f3.list(new FilenameFilter() {
			
			@Override
			/**
			 * File dir：文件的目录
			 * String name：文件的名称
			 */
			public boolean accept(File dir, String name) {
				System.out.println(dir);
				System.out.println(name);
				return name.startsWith(".");
			}
		});
		System.out.println(Arrays.toString(files));
		//创建目录
		String p3 = "files" + File.separator + "1" + File.separator + "2" + File.separator + "3";
		File f4 = new File(p3);
//		f4.mkdir();//创建不了
		f4.mkdirs();//只需要使用这个就可以了
	}

}
